// 版权所有2011 Go作者。版权所有。
// 此源代码的使用受BSD样式的约束
// 可以在许可证文件中找到的许可证。

// 包错误实现处理错误的函数。
// None
// 新函数创建的错误的唯一内容是文本消息。
// None
// “展开”、“Is”和“As”函数用于处理可能包裹其他错误的错误。
// 如果某个错误的类型具有该方法，则该错误会包装另一个错误
// None
// 展开（）错误
// None
// 如果e.Unwrap（）返回一个非零错误w，那么我们说e包装w。
// None
// 解包解包错误。如果其参数的类型具有
// 展开方法，它调用该方法一次。否则，它返回nil。
// None
// 创建包装错误的一种简单方法是调用fmt.Errorf并应用%w谓词
// 对于错误参数：
// None
// errors.Unwrap（fmt.Errorf（“…%w…”，…，err…）
// None
// 返回错误。
// None
// 是按顺序展开其第一个参数，查找与
// 第二它报告是否找到匹配项。它应该优先于
// 简单的平等性检查：
// None
// if errors.Is（err，fs.ErrExist）
// None
// 比
// None
// 如果err==fs.ErrExist
// None
// 因为如果err包装fs.ErrExist，则前者将成功。
// None
// As按顺序展开其第一个参数，以查找可能发生的错误
// 指定给其第二个参数，该参数必须是指针。如果它成功了，它就会失败
// 执行赋值并返回true。否则，它将返回false。形式
// None
// var perr*fs.PathError
// if errors.As（err和perr）{
// fmt.Println（perr.Path）
// }
// None
// 比
// None
// 如果perr，ok:=err.（*fs.PathError）；嗯{
// fmt.Println（perr.Path）
// }
// None
// 因为如果err包装一个*fs.PathError，则前者将成功。
package errors

// New返回格式为给定文本的错误。
// 每次调用New都会返回一个不同的错误值，即使文本相同。
func New(text string) error {
	return &errorString{text}
}

// errorString是错误的一个简单实现。
type errorString struct {
	s string
}

func (e *errorString) Error() string {
	return e.s
}
